/**
 * 导航
 * @author hanson
 */
define(['jquery', 'jquery-validate-messages_zh', 'layer', 'public/js/util', 'public/js/paging', 'datatables.net-bs'], 
		function($, Validate, Layer, Util){
	
	var Page = {}, DOM;
	
	function init(){
		DOM = {
				form: $('#form'),
				btnSubmit: $('#btnSubmit'),
				selLinkType: $('.selLinkType'),
				inpLinkData: $('.inpLinkData'),
				divUrl: $('.divUrl'),
				divArticle: $('.divArticle'),
				divArticleClass: $('.divArticleClass'),
				btnChooseArticle: $('.btnChooseArticle'),
				modalArticle: $('#modalArticle')
		}
		
		if(!Util.isEmpty(Mod.link.data)){
			var jsonData =  JSON.parse(Mod.link.data);
			switch (Mod.link.type) {
				case 'url':{
					DOM.form.find('.inpUrl').val(jsonData.url);
					break;
				}
				case 'article':{
					DOM.form.find('.inpArticleId').val(jsonData.id);
					DOM.form.find('.inpArticleTitle').val(jsonData.title);
					break;
				}
				case 'articleClass':{
					DOM.form.find('.selArticleClassId').val(jsonData.id);
					break;
				}
				default:
					break;
			}
		}
	}
	
	Page.main = function(){
		init();
		handleEvent();
	}
	
	function handleEvent(){
		// 表单校验
		DOM.form.validate({
			rules : {
				navigationPositionId:{required:true},
				title:{required:true},
				'link.type':{required:true}
			},
		});
		
		// 链接类型下拉框改变事件
		DOM.selLinkType.change(function(){
			var $divLink = DOM.divUrl.add(DOM.divArticle).add(DOM.divArticleClass);
			$divLink.addClass('hidden');
			var type = $(this).val();
			if(type == 'url'){
				DOM.divUrl.removeClass('hidden');
			}else if(type == 'article'){
				DOM.divArticle.removeClass('hidden');
			}else if(type == 'articleClass'){
				DOM.divArticleClass.removeClass('hidden');
			}
		});
		// 默认选中第一个
		DOM.selLinkType.change();
		
		// 选择文章
		DOM.btnChooseArticle.click(function(){
			$.ajax({
				url: 'articleList',
				type:'get',
				data:{},
				contentType:'html',
				success:function(data){
					DOM.modalArticle.find('.box-body').html(data);
				}
			});
			DOM.modalArticle.modal('show');
		});
		
		// 给文章弹框的搜索按钮绑定事件
		DOM.modalArticle.find('#formList .btnSearch').click(function(){
			var formData = $(this).closest('#formList').serialize();
			$.ajax({
				url: 'articleList',
				type:'get',
				data: formData,
				contentType:'html',
				success:function(data){
					DOM.modalArticle.find('.box-body').html(data);
				}
			});
		});
		
		// 提交表单
		DOM.btnSubmit.click(function(){
			if(DOM.form.valid()){
				var linkType = DOM.selLinkType.val();
				var linkData = makeLinkData(linkType);
				if(!checkLinkData(linkType, linkData)){
					return false;
				}
				DOM.inpLinkData.val(JSON.stringify(linkData));
				DOM.form.submit();
			}
		});
	}
	
	function makeLinkData(type){
		switch(type){
			case 'url':{
				return {
					'url': $('.inpUrl').val()
				};
			}
			case 'article':{
				return {
					'id': $('.inpArticleId').val()
				};
			}
			case 'articleClass':{
				return {
					'id': $('.selArticleClassId').val()
				};
			}
			return {};
		}
	}
	
	function checkLinkData(type, data){
		switch(type){
			case 'url':{
				if(Util.isEmpty(data.url)){
					Layer.alert('链接不能为空');
					return false;
				}
				break;
			}
			case 'article':{
				if(Util.isEmpty(data.id)){
					Layer.alert('文章不能为空');
					return false;
				}
				break;
			}
			case 'articleClass':{
				if(Util.isEmpty(data.id)){
					Layer.alert('文章分类不能为空');
					return false;
				}
				break;
			}
		}
		return true;
	}
	
	function chooseArticle(ele){
		$tr = $(ele).closest('tr');
		console.log($tr.data('title'));
		DOM.divArticle.find('.inpArticleId').val($tr.data('id'));
		DOM.divArticle.find('.inpArticleTitle').val($tr.data('title'));
		DOM.modalArticle.modal('hide');
	}
	
	// 对外访问
	var method = {
			chooseArticle: chooseArticle
	}
	
	$.extend(Page, method);
	return Page;
});